import { defineConfig, loadEnv } from 'vite'
import { resolve } from 'path'
import uni from '@dcloudio/vite-plugin-uni'
// 自动导入
import AutoImport from 'unplugin-auto-import/vite'

export default defineConfig((configEnv) => {
	const env = loadEnv(configEnv.mode, process.cwd())
	return {
		base: './',
		// 设置路径别名
		resolve: {
			alias: {
				'@': resolve('./src'),
			},
			extensions: ['.js', '.json', '.ts', '.vue'], // 使用路径别名时想要省略的后缀名，可以自己 增减
		},
		// 自定义全局变量
		define: {
			'process.env': {},
		},
		// 开发服务器配置
		server: {
			host: true,
			open: true,
			port: 3000,
			proxy: {
				'/api': {
					target: env.VITE_BASE_URL,
					changeOrigin: true,
					rewrite: (path) => path.replace(/^\/api/, ''),
				},
			},
		},
		// 插件
		plugins: [
			uni(),
			AutoImport({
				include: [
					/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
					/\.vue$/,
					/\.vue\?vue/, // .vue
				],
				imports: ['vue', 'uni-app'],
				dts: false,
			}),
		],
		css: {
			postcss: {
				plugins: [
					require('postcss-pxtorpx-pro')({
						// 转化的单位
						unit: 'rpx',
						// 单位精度
						unitPrecision: 5,
						// 不需要处理的css选择器
						selectorBlackList: [],
						// 不需要转化的css属性
						propBlackList: [],
						// 直接修改px，还是新加一条css规则
						replace: true,
						// 是否匹配媒介查询的px
						mediaQuery: false,
						// 需要转化的最小的pixel值，低于该值的px单位不做转化
						minPixelValue: 2,
						// 不处理的文件
						exclude: /node_modules|components/gi,
						// 转化函数
						// 视口375px
						transform: (x: any) => 2 * x,
					}),
				],
			},
		},
	}
})
